/*
 * @Descripttion:
 * @version:
 * @Author: YouHuJun
 * @Date: 2021-05-28 20:11:20
 * @LastEditors: YouHuJun
 * @LastEditTime: 2021-05-28 22:48:03
 */
import Layout from '@/layout'
const documentation = {
  path: '/documentation',
  component: Layout,
  children: [{
    path: 'index',
    component: () =>
      import ('@/views/documentation/index'),
    name: 'Documentation',
    meta: { title: 'Documentation', icon: 'documentation', affix: true }
  }]
}

const guide = {
  path: '/guide',
  component: Layout,
  redirect: '/guide/index',
  children: [{
    path: 'index',
    component: () =>
      import ('@/views/guide/index'),
    name: 'Guide',
    meta: { title: 'Guide', icon: 'guide', noCache: true }
  }]
}
const permissionRouter = {
  path: '/permission',
  component: Layout,
  redirect: '/permission/page',
  alwaysShow: true, // will always show the root menu
  name: 'Permission',
  meta: {
    title: 'Permission',
    icon: 'lock',
    roles: ['admin', 'editor'] // you can set roles in root nav
  },
  children: [{
    path: 'page',
    component: () =>
      import ('@/views/permission/page'),
    name: 'PagePermission',
    meta: {
      title: 'Page Permission',
      roles: ['admin'] // or you can only set roles in sub nav
    }
  },
  {
    path: 'directive',
    component: () =>
      import ('@/views/permission/directive'),
    name: 'DirectivePermission',
    meta: {
      title: 'Directive Permission'
      // if do not set roles, means: this page does not require permission
    }
  },
  {
    path: 'role',
    component: () =>
      import ('@/views/permission/role'),
    name: 'RolePermission',
    meta: {
      title: 'Role Permission',
      roles: ['admin']
    }
  }
  ]
}

const iconRouter = {
  path: '/icon',
  component: Layout,
  children: [{
    path: 'index',
    component: () =>
      import ('@/views/icons/index'),
    name: 'Icons',
    meta: { title: 'Icons', icon: 'icon', noCache: true }
  }]
}

const exampleRouter = {
  path: '/example',
  component: Layout,
  redirect: '/example/list',
  name: 'Example',
  meta: {
    title: 'Example',
    icon: 'el-icon-s-help'
  },
  children: [{
    path: 'create',
    component: () =>
      import ('@/views/example/create'),
    name: 'CreateArticle',
    meta: { title: 'Create Article', icon: 'edit' }
  },
  {
    path: 'edit/:id(\\d+)',
    component: () =>
      import ('@/views/example/edit'),
    name: 'EditArticle',
    meta: { title: 'Edit Article', noCache: true, activeMenu: '/example/list' },
    hidden: true
  },
  {
    path: 'list',
    component: () =>
      import ('@/views/example/list'),
    name: 'ArticleList',
    meta: { title: 'Article List', icon: 'list' }
  }
  ]
}

const tabRouter = {
  path: '/tab',
  component: Layout,
  children: [{
    path: 'index',
    component: () =>
      import ('@/views/tab/index'),
    name: 'Tab',
    meta: { title: 'Tab', icon: 'tab' }
  }]
}

const errorRouter = {
  path: '/error',
  component: Layout,
  redirect: 'noRedirect',
  name: 'ErrorPages',
  meta: {
    title: 'Error Pages',
    icon: '404'
  },
  children: [{
    path: '401',
    component: () =>
      import ('@/views/error-page/401'),
    name: 'Page401',
    meta: { title: '401', noCache: true }
  },
  {
    path: '404',
    component: () =>
      import ('@/views/error-page/404'),
    name: 'Page404',
    meta: { title: '404', noCache: true }
  }
  ]
}

const errorlogRouter = {
  path: '/error-log',
  component: Layout,
  children: [{
    path: 'log',
    component: () =>
      import ('@/views/error-log/index'),
    name: 'ErrorLog',
    meta: { title: 'Error Log', icon: 'bug' }
  }]
}

const excelRouter = {
  path: '/excel',
  component: Layout,
  redirect: '/excel/export-excel',
  name: 'Excel',
  meta: {
    title: 'Excel',
    icon: 'excel'
  },
  children: [{
    path: 'export-excel',
    component: () =>
      import ('@/views/excel/export-excel'),
    name: 'ExportExcel',
    meta: { title: 'Export Excel' }
  },
  {
    path: 'export-selected-excel',
    component: () =>
      import ('@/views/excel/select-excel'),
    name: 'SelectExcel',
    meta: { title: 'Export Selected' }
  },
  {
    path: 'export-merge-header',
    component: () =>
      import ('@/views/excel/merge-header'),
    name: 'MergeHeader',
    meta: { title: 'Merge Header' }
  },
  {
    path: 'upload-excel',
    component: () =>
      import ('@/views/excel/upload-excel'),
    name: 'UploadExcel',
    meta: { title: 'Upload Excel' }
  }
  ]
}

const zipRouter = {
  path: '/zip',
  component: Layout,
  redirect: '/zip/download',
  alwaysShow: true,
  name: 'Zip',
  meta: { title: 'Zip', icon: 'zip' },
  children: [{
    path: 'download',
    component: () =>
      import ('@/views/zip/index'),
    name: 'ExportZip',
    meta: { title: 'Export Zip' }
  }]
}

const pdfRouter = {
  path: '/pdf',
  component: Layout,
  redirect: '/pdf/index',
  children: [{
    path: 'index',
    component: () =>
      import ('@/views/pdf/index'),
    name: 'PDF',
    meta: { title: 'PDF', icon: 'pdf' }
  }]
}

const pdfdownloadRouter = {
  path: '/pdf/download',
  component: () =>
    import ('@/views/pdf/download'),
  hidden: true
}

const themeRouter = {
  path: '/theme',
  component: Layout,
  children: [{
    path: 'index',
    component: () =>
      import ('@/views/theme/index'),
    name: 'Theme',
    meta: { title: 'Theme', icon: 'theme' }
  }]
}

const clipboardRouter = {
  path: '/clipboard',
  component: Layout,
  children: [{
    path: 'index',
    component: () =>
      import ('@/views/clipboard/index'),
    name: 'ClipboardDemo',
    meta: { title: 'Clipboard', icon: 'clipboard' }
  }]
}

const externallinkRouter = {
  path: 'external-link',
  component: Layout,
  children: [{
    path: 'https://github.com/PanJiaChen/vue-element-admin',
    meta: { title: 'External Link', icon: 'link' }
  }]
}

const componentsRouter = {
  path: '/components',
  component: Layout,
  redirect: 'noRedirect',
  name: 'ComponentDemo',
  meta: {
    title: 'Components',
    icon: 'component'
  },
  children: [{
    path: 'tinymce',
    component: () =>
      import ('@/views/components-demo/tinymce'),
    name: 'TinymceDemo',
    meta: { title: 'Tinymce' }
  },
  {
    path: 'markdown',
    component: () =>
      import ('@/views/components-demo/markdown'),
    name: 'MarkdownDemo',
    meta: { title: 'Markdown' }
  },
  {
    path: 'json-editor',
    component: () =>
      import ('@/views/components-demo/json-editor'),
    name: 'JsonEditorDemo',
    meta: { title: 'JSON Editor' }
  },
  {
    path: 'split-pane',
    component: () =>
      import ('@/views/components-demo/split-pane'),
    name: 'SplitpaneDemo',
    meta: { title: 'SplitPane' }
  },
  {
    path: 'avatar-upload',
    component: () =>
      import ('@/views/components-demo/avatar-upload'),
    name: 'AvatarUploadDemo',
    meta: { title: 'Upload' }
  },
  {
    path: 'dropzone',
    component: () =>
      import ('@/views/components-demo/dropzone'),
    name: 'DropzoneDemo',
    meta: { title: 'Dropzone' }
  },
  {
    path: 'sticky',
    component: () =>
      import ('@/views/components-demo/sticky'),
    name: 'StickyDemo',
    meta: { title: 'Sticky' }
  },
  {
    path: 'count-to',
    component: () =>
      import ('@/views/components-demo/count-to'),
    name: 'CountToDemo',
    meta: { title: 'Count To' }
  },
  {
    path: 'mixin',
    component: () =>
      import ('@/views/components-demo/mixin'),
    name: 'ComponentMixinDemo',
    meta: { title: 'Component Mixin' }
  },
  {
    path: 'back-to-top',
    component: () =>
      import ('@/views/components-demo/back-to-top'),
    name: 'BackToTopDemo',
    meta: { title: 'Back To Top' }
  },
  {
    path: 'drag-dialog',
    component: () =>
      import ('@/views/components-demo/drag-dialog'),
    name: 'DragDialogDemo',
    meta: { title: 'Drag Dialog' }
  },
  {
    path: 'drag-select',
    component: () =>
      import ('@/views/components-demo/drag-select'),
    name: 'DragSelectDemo',
    meta: { title: 'Drag Select' }
  },
  {
    path: 'dnd-list',
    component: () =>
      import ('@/views/components-demo/dnd-list'),
    name: 'DndListDemo',
    meta: { title: 'Dnd List' }
  },
  {
    path: 'drag-kanban',
    component: () =>
      import ('@/views/components-demo/drag-kanban'),
    name: 'DragKanbanDemo',
    meta: { title: 'Drag Kanban' }
  }
  ]
}

const chartsRouter = {
  path: '/charts',
  component: Layout,
  redirect: 'noRedirect',
  name: 'Charts',
  meta: {
    title: 'Charts',
    icon: 'chart'
  },
  children: [{
    path: 'keyboard',
    component: () =>
      import ('@/views/charts/keyboard'),
    name: 'KeyboardChart',
    meta: { title: 'Keyboard Chart', noCache: true }
  },
  {
    path: 'line',
    component: () =>
      import ('@/views/charts/line'),
    name: 'LineChart',
    meta: { title: 'Line Chart', noCache: true }
  },
  {
    path: 'mix-chart',
    component: () =>
      import ('@/views/charts/mix-chart'),
    name: 'MixChart',
    meta: { title: 'Mix Chart', noCache: true }
  }
  ]
}

const nestedRouter = {
  path: '/nested',
  component: Layout,
  redirect: '/nested/menu1/menu1-1',
  name: 'Nested',
  meta: {
    title: 'Nested Routes',
    icon: 'nested'
  },
  children: [{
    path: 'menu1',
    component: () =>
      import ('@/views/nested/menu1/index'), // Parent router-view
    name: 'Menu1',
    meta: { title: 'Menu 1' },
    redirect: '/nested/menu1/menu1-1',
    children: [{
      path: 'menu1-1',
      component: () =>
        import ('@/views/nested/menu1/menu1-1'),
      name: 'Menu1-1',
      meta: { title: 'Menu 1-1' }
    },
    {
      path: 'menu1-2',
      component: () =>
        import ('@/views/nested/menu1/menu1-2'),
      name: 'Menu1-2',
      redirect: '/nested/menu1/menu1-2/menu1-2-1',
      meta: { title: 'Menu 1-2' },
      children: [{
        path: 'menu1-2-1',
        component: () =>
          import ('@/views/nested/menu1/menu1-2/menu1-2-1'),
        name: 'Menu1-2-1',
        meta: { title: 'Menu 1-2-1' }
      },
      {
        path: 'menu1-2-2',
        component: () =>
          import ('@/views/nested/menu1/menu1-2/menu1-2-2'),
        name: 'Menu1-2-2',
        meta: { title: 'Menu 1-2-2' }
      }
      ]
    },
    {
      path: 'menu1-3',
      component: () =>
        import ('@/views/nested/menu1/menu1-3'),
      name: 'Menu1-3',
      meta: { title: 'Menu 1-3' }
    }
    ]
  },
  {
    path: 'menu2',
    name: 'Menu2',
    component: () =>
      import ('@/views/nested/menu2/index'),
    meta: { title: 'Menu 2' }
  }
  ]
}

const tableRouter = {
  path: '/table',
  component: Layout,
  redirect: '/table/complex-table',
  name: 'Table',
  meta: {
    title: 'Table',
    icon: 'table'
  },
  children: [{
    path: 'dynamic-table',
    component: () =>
      import ('@/views/table/dynamic-table/index'),
    name: 'DynamicTable',
    meta: { title: 'Dynamic Table' }
  },
  {
    path: 'drag-table',
    component: () =>
      import ('@/views/table/drag-table'),
    name: 'DragTable',
    meta: { title: 'Drag Table' }
  },
  {
    path: 'inline-edit-table',
    component: () =>
      import ('@/views/table/inline-edit-table'),
    name: 'InlineEditTable',
    meta: { title: 'Inline Edit' }
  },
  {
    path: 'complex-table',
    component: () =>
      import ('@/views/table/complex-table'),
    name: 'ComplexTable',
    meta: { title: 'Complex Table' }
  }
  ]
}

export {
  documentation,
  guide,
  permissionRouter,
  iconRouter,
  exampleRouter,
  tabRouter,
  errorRouter,
  errorlogRouter,
  excelRouter,
  zipRouter,
  pdfRouter,
  pdfdownloadRouter,
  themeRouter,
  clipboardRouter,
  externallinkRouter,
  componentsRouter,
  chartsRouter,
  nestedRouter,
  tableRouter
}
